#ifndef SCREENSHOTCONFIG_H
#define SCREENSHOTCONFIG_H

#include <QString>
#include <QJsonObject>
#include "module_global.h"

/**
 * @brief 截图配置数据模型
 */
class MODULE_EXPORT ScreenshotConfig
{
public:
    ScreenshotConfig();
    
    // ========== 序列化 ==========
    QJsonObject toJson() const;
    static ScreenshotConfig fromJson(const QJsonObject& json);
    
    // ========== Getters ==========
    QString getDefaultSavePath() const { return m_defaultSavePath; }
    QString getDefaultFileName() const { return m_defaultFileName; }
    QString getDefaultFormat() const { return m_defaultFormat; }
    int getJpegQuality() const { return m_jpegQuality; }
    bool isAutoCopyToClipboard() const { return m_autoCopyToClipboard; }
    bool isAutoSave() const { return m_autoSave; }
    
    // ========== Setters ==========
    void setDefaultSavePath(const QString& path) { m_defaultSavePath = path; }
    void setDefaultFileName(const QString& fileName) { m_defaultFileName = fileName; }
    void setDefaultFormat(const QString& format) { m_defaultFormat = format; }
    void setJpegQuality(int quality) { m_jpegQuality = qBound(0, quality, 100); }
    void setAutoCopyToClipboard(bool enabled) { m_autoCopyToClipboard = enabled; }
    void setAutoSave(bool enabled) { m_autoSave = enabled; }
    
    // ========== 验证 ==========
    bool isValid() const;
    
private:
    QString m_defaultSavePath;      // 默认保存路径
    QString m_defaultFileName;      // 默认文件名模板
    QString m_defaultFormat;         // 默认格式（png/jpg）
    int m_jpegQuality;               // JPEG 质量（0-100）
    bool m_autoCopyToClipboard;     // 是否自动复制到剪贴板
    bool m_autoSave;                 // 是否自动保存
};

#endif // SCREENSHOTCONFIG_H



